function nexpr = collect(expr, v)
    % nexpr = collect(expr)
    % nexpr = collect(expr,v)
    
    % nexpr = collect(expr) 对符号表达式 expr 中相同幂次的项按照默认变量进行系数合并
    % nexpr = collect(expr,v) 对符号表达式expr中相同幂次的项按照指定变量v的多项式形式返回
    
    %% 例子：
    % 按照默认变量进行合并：
    % Input [1] >> x = sym('x');
    % Input [2] >> collect((x+3)*(x+2))
    % x**2 + 5*x + 6
    %% 按照指定变量进行合并：
    % Input [1] >> [x,y] = syms('x y');
    % Input [2] >> collect(x^2*y + 3*x*y - 2*x^2 - 5*x, x)
    % 输出：x**2*(y - 2) + x*(3*y - 5)
    
    py = pyroot;
    expr = expr.expand();
    if nargin == 1
        vars = py.list(expr.free_symbols);
        vars.sort();
        nexpr = expr.collect(vars{0});
    end
    
    if nargin ==2
        nexpr = expr.collect(v);
    end
end
